//题目描述
//给定两个正整数a, b，求gcd(a, b)和lcm(a, b)。gcd(a, b)表示a, b的最大公因数。lcm(a, b)表示a, b的最小公倍数。
//输入描述
//第一行输入一个整数𝑇，表示样例的个数。(1≤T≤10^5)
//对于每个样例，两个整数a, b。(1≤a, b≤2×10^9)
//输出描述
//对于每一个样例，在一行输出两个整数表示gcd和lcm。
//样例输入1
//3
//6 9
//12 3
//5 7
//样例输出1
//3 18
//3 12
//1 35
//最小公倍数和最大公约数
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e9 + 9;
ll gcd(ll a, ll b) {
	return b==0? a : gcd(b,a%b);
}
ll lcm(ll a, ll b) {//a*b=lcm(a,b)*gcd(a,b)
	return a/ gcd(a, b) * b;
}

int main() {
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	int t; cin >> t;
	while (t--) {
		ll a, b; cin >> a >> b;
		cout << gcd(a, b)<<" "<<lcm(a,b)<<"\n";
	}
	
	return 0;
}